package libs

import "fmt"

// 父类声明
type Human struct {
	name string
	sex  string
}

// 子类声明
type Superman struct {
	Human
	level int
}

// 父类方法声明
func (h *Human) Eat() {
	fmt.Println(h.name, " eat...")
}

// 子类方法声明
func (s *Superman) Fly() {
	fmt.Println(s.name, " fly...")
}

// 主函数调用
func SupermanShow() {
	// 对象声明
	human1 := Human{
		name: "jason",
		sex:  "xx",
	}

	// 继承1
	superman1 := Superman{
		Human{
			name: "tom",
			sex:  "oo",
		},
		98,
	}

	// 继承2
	var superman2 Superman
	superman2.name = "张三"
	superman2.sex = "xx"
	superman2.level = 128

	// 对象调用
	human1.Eat()
	superman1.Eat()
	superman1.Fly()
	superman2.Fly()
}
